草庐IT

反射简化 JDBC ResultSet

全部标签

c# - 在反射方法调用中访问网络共享

我们有一个访问网络共享的方法。该方法在直接调用时工作正常,但在通过反射调用时我们会得到一个System.IO.IOException。用户上下文似乎对反射(reflect)的代码不可用(请参阅下面的堆栈跟踪)。有办法避免这种情况吗?System.Reflection.TargetInvocationException:Exceptionhasbeenthrownbythetargetofaninvocation.--->System.IO.IOException:Logonfailure:unknownusernameorbadpassword.atSystem.IO.__Error.

c# - 如何在 C# 中设置带有反射的私有(private) lazy<T> 以进行测试?

问题描述我们有一个相当大的系统,过去常常使用私有(private)setter将数据加载到属性中。为了使用测试特定场景,我曾经使用私有(private)setter在这些属性中写入数据。但是,由于系统越来越慢,并且正在加载不必要的东西,我们使用Lazy类将某些东西更改为延迟加载。但是,现在我无法再将数据写入这些属性,因此许多单元测试将不再运行。我们曾经拥有的要测试的对象:publicclassComplexClass{publicDateTimeDate{get;privateset;}publicComplexClass(){//Sampledata,eagerloadingdata

c# - 向动态创建的程序集授予反射权限

我正在用C#编写一个简单的桌面客户端/服务器应用程序。出于自学目的,我为通过tcp/ip套接字连接在两个应用程序之间来回发送的消息(定义为类)构建了自己的序列化系统。系统在初始化时使用反射,通过发出IL为每种消息类型构造序列化/反序列化方法。该系统的第一个版本使用DynamicMethod,将true传递给构造函数以允许生成的IL(对消息类型中的任意字段进行操作)忽略访问权限。这奏效了,人们很高兴,但我对调试结果函数的过程是多么痛苦不透明感到不满。因此,我决定放弃DynamicMethod并使用*Builder类来构造一个动态程序集,我可以选择将其保存到磁盘并使用.NETReflect

c# - 如何使用强类型反射查找泛型类方法的 MethodInfo?

我想从具有仅在运行时已知的类型参数的泛型类中获取方法的MethodInfo。下面是我如何从非泛型类中获取泛型方法的MethodInfo:classMyClass{publicvoidMyMethod(Targ){}}staticMethodInfoResolve(Typetype){Expression>lambda=(c,a)=>c.MyMethod(a);MethodCallExpressioncall=lambda.BodyasMethodCallExpression;returncall.Method//GetMethodInfoforMyClass.MyMethod.GetG

c# - 简化泛型类型推断

我正在编写一个通用代码,用于处理从多个来源加载数据的情况。我有一个具有以下签名的方法:publicstaticTResultLoadFromAnySource(thisTSectionsection,stringserviceBaseUri,stringnodeName)whereTSection:ConfigurationSectionwhereTResult:IDatabaseConfigurable,new()whereTContract:new()但这有点矫枉过正:当我通过TResult时,我已经知道什么了TContract和TSection确实是。在我的示例中:publici

c# - 反射类型与类型描述符

最近我一直在使用反射在我的项目中工作,我有当前的问题。在Type.GetProperties(Flags)中,我们可以使用“Flags”过滤我们获得的属性;在TypeDescriptor.GetProperties()中,我们没有。在type.GetProperties中,我可以过滤以仅获取未继承的属性。是否可以对TypeDescriptor.GetProperties()执行相同的操作(仅不继承属性)?谢谢 最佳答案 不,你不能。TypeDescriptor.GetProperties()用于获取PropertyDescripto

c# - 通过反射调用带有可选参数的方法

这个问题在这里已经有了答案:Invokingmethodswithoptionalparametersthroughreflection(6个答案)关闭6年前。我可以使用Type.InvokeMember通过反射调用一个方法,它看起来非常健壮,例如处理param数组参数。但出于某种原因,它不处理可选参数。是否有更好的内置方法来调用考虑了可选参数的方法(可能使用DLR)?

c# - 如何使用反射调用带有 ref/out 参数的方法

假设我有以下类(class):classCow{publicstaticboolTryParse(strings,outCowcow){...}}是否可以通过反射调用TryParse?我知道基础知识:vartype=typeof(Cow);vartryParse=type.GetMethod("TryParse");vartoParse="...";varresult=(bool)tryParse.Invoke(null,/*whataretheargs?*/); 最佳答案 你可以这样做:staticvoidMain(string[

c# - 如何使用反射获取泛型类型的扩展方法

从互联网上的各种来源,我收集了以下功能:publicstaticNullableTryParseNullable(thisNullablet,stringinput)whereT:struct{if(string.IsNullOrEmpty(input))returndefault(T);Nullableresult=newNullable();try{IConvertibleconvertibleString=(IConvertible)input;result=newNullable((T)convertibleString.ToType(typeof(T),CultureInfo

c# - 使用反射确定 .Net 类型在内存中的布局方式

我正在尝试用C#优化解析器组合器。当序列化格式与内存中格式匹配时,一种可能的优化是只对要在该类型的一个实例或什至多个实例上解析的数据执行(不安全的)memcpy。我想编写代码来确定内存格式是否与序列化格式匹配,以便动态确定是否可以应用优化。(显然,这是一个不安全的优化,可能由于一大堆微妙的原因而无法工作。我只是在试验,不打算在生产代码中使用它。)我使用属性[StructLayout(LayoutKind.Sequential,Pack=1)]强制不填充并强制内存中的顺序与声明顺序匹配。我用反射检查该属性,但实际上所有这些都确认是“无填充”。我还需要字段的顺序。(我强烈希望不必为每个字段